package com.mt.api.modules.manager;


import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.mt.api.modules.domain.AppStock;
import com.mt.api.modules.domain.bo.StockCargoPageBo;
import com.mt.api.modules.domain.dto.StockStatQtyByCargoDto;
import com.mt.api.modules.domain.dto.StockWithPrice;

import java.util.List;

/**
 * @Author: plover
 * @Date: 2022-01-02
 * @Description:
 */
public interface IStockManager extends IService<AppStock> {

    /**
     * 减库存，并且减总库存
     *
     * @param id
     * @param qty
     * @return
     */
    int subtractQtyAndTotalQty(Integer id, Integer qty);

    /**
     * 减库存
     *
     * @param skuId
     * @param qty
     * @return
     */
    int subtractQtyBySkuId(Integer skuId, Integer qty);

    /**
     * 增加库存，并且增加总库存
     *
     * @param qty
     * @return
     */
    int plusQtyAndTotalQty(Integer id, Integer qty);

    /**
     * 增加库存
     *
     * @param qty
     * @return
     */
    int plusQtyBySkuId(Integer skuId, Integer qty);

    /**
     * 更新库存
     *
     * @param id
     * @param qty
     * @return
     */
    int updateQtyById(Integer id, Integer qty);

    Page<StockStatQtyByCargoDto> getPageGroupByCargo(StockCargoPageBo bo);

    AppStock getStockBySkuId(Integer skuId);

    boolean saveOrUpdateStock(AppStock appStock);

    List<AppStock> getListBySkuIds(List<Integer> skuIds);

    List<StockWithPrice> getStockWithPrice();

    List<StockStatQtyByCargoDto> statQtyByCargo(List<Integer> cargoIdList);

    List<AppStock> getStockByCargoIds(List<Integer> cargoIdList);

}
